這次的文章主要是參考張元的影片來做筆記,接下來要介紹關於ELF與ASM的部分
.bss
: 存放未初始化值的全域變數 (global variable).data
: 存放具初始化值的全域變數.rodata
: 存放唯讀(read only)資料.text
: 存放編譯後的code
RSP
- Stack Pointer Registers
RBP
- Base Pointer Registers
RIP
- Register Instruction Pointer
jmp
- 跳至程式某一個地址A(address)執行
call
- 將call完後回來緊接著要執行下一行指令位置push到stack上儲存起來,在跳過去執行
leave
- 還原至caller的stack frame
ret(return)
compiler前面三行通常都為:
func:
push rbp ; 把saved rbp疊上去stack
mov rbp, rsp
sub rsp, 0x70 ;把stack往前減一個空間(0x70), 目的是預留local variable 需要用到的空間
Pass parameters
x64
- register 傳參x86
- stack 傳參https://github.com/yuawn/NTU-Computer-Security